package cn.b.sky.mes.hr.service;

import java.util.List;

import cn.b.sky.mes.cm.model.WorkCenter;
import cn.b.sky.mes.hr.model.condition.PersonnelCondition;
import cn.b.sky.mes.hr.model.Personnel;
import cn.b.sky.common.model.BatchJobReport;
import cn.b.sky.common.model.TreeInterface;

public interface PersonnelService {

  /**
   * 
   * <strong>Title : getPersonnelListByCondition<br></strong>
   * <strong>Description : </strong>根据条件查询人员列表<br> 
   * <strong>Create on : 2016-3-28 下午3:12:10<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Personnel>
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br> 
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Personnel> getPersonnelListByCondition(PersonnelCondition condition);

  /**
   * 
   * <strong>Title : getPersonnelCountByCondition<br></strong>
   * <strong>Description : </strong>查询人员数量<br> 
   * <strong>Create on : 2016-3-28 下午3:12:56<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getPersonnelCountByCondition(PersonnelCondition condition);

  /**
   * 
   * <strong>Title : savePersonnel<br></strong>
   * <strong>Description : </strong>新增人员<br> 
   * <strong>Create on : 2016-3-29 上午8:47:21<br></strong>
   * <p>
   * @param personnel
   * void
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void savePersonnel(Personnel personnel);

  /**
   * 
   * <strong>Title : updatePersonnel<br></strong>
   * <strong>Description : </strong>人员信息修改<br> 
   * <strong>Create on : 2016-3-29 上午10:30:32<br></strong>
   * <p>
   * @param personnel
   * void
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updatePersonnel(Personnel personnel);

  /**
   * 
   * <strong>Title : getPersonnelInfo<br></strong>
   * <strong>Description : </strong>人员详细信息查询<br> 
   * <strong>Create on : 2016-3-29 上午10:30:45<br></strong>
   * <p>
   * @param siteCode
   * @param personnelCode
   * @return
   * Personnel
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Personnel getPersonnelInfo(String siteCode, String personnelCode);

  /**
   * 
   * <strong>Title : deletePersonnel<br></strong>
   * <strong>Description : </strong>人员删除<br> 
   * <strong>Create on : 2016-3-29 上午10:31:03<br></strong>
   * <p>
   * @param siteCode
   * @param personnelCode
   * @return
   * BatchJobReport
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport deletePersonnel(String siteCode, String personnelCode);

  /**
   * 
   * <strong>Title : selectWorkCentersByShiftingPermission<br></strong>
   * <strong>Description : </strong>根据用户获取有权限的工作中心列表<br> 
   * <strong>Create on : 2016-3-31 下午1:03:31<br></strong>
   * <p>
   * @param siteCode
   * @param userCode
   * @return
   * List<WorkCenter>
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkCenter> selectWorkCentersByShiftingPermission(String siteCode, String userCode);

  /**
   * 
   * <strong>Title : getWorkCenterTree<br></strong>
   * <strong>Description : </strong>根据用户获取有权限的工作中心树<br> 
   * <strong>Create on : 2016-3-31 下午1:05:24<br></strong>
   * <p>
   * @param siteCode
   * @param userCode
   * @return
   * List<TreeInterface>
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<TreeInterface> getWorkCenterTree(String siteCode, String userCode);

  /**
   * 
   * <strong>Title : getPersonnelsByPermission<br></strong>
   * <strong>Description : </strong>根据权限查找用户列表（模糊查询）<br> 
   * <strong>Create on : 2016年3月29日 下午2:50:40<br></strong>
   * <p>
   * @param siteCode 工厂编号
   * @param userCode 权限用户编号
   * @param personnelCode 人员编号
   * @param workcenterCode 指定工作中心
   * @return
   * List<Personnel>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Personnel> getPersonnelsByPermission(String siteCode, String userCode, String personnelCode,
      String workcenterCode);


  /**
   * 
   * <strong>Title : getPersonnelsSuggestByPermission<br></strong>
   * <strong>Description : </strong>人员的查找建议<br> 
   * <strong>Create on : 2016-4-11 下午6:09:46<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Personnel>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Personnel> getPersonnelsSuggestByPermission(PersonnelCondition condition);
}
